perm filename UUO.UPD[S,DOC]105 blob sn#520607 filedate 1980-07-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00011 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	This file contains corrections, additions and updates to the UUO Manual,
C00005 00003	[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]
C00012 00004	187.  The following new TTYSETs are defined:
C00048 00005	249.  TTYSET operation number 41 is "hang up modem", only works on DCA
C00072 00006	295.  The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
C00079 00007	310.  Device VRN is the Varian Plotter, driven from P2.  It can be
C00083 00008	315.  The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
C00086 00009	319.  The following UUOs are added for DM NOEDIT mode (see NOEDIT/D
C00091 00010	320.  The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
C00100 00011	327.  Include the rest of the character codes for the Analex LPT
C00112 ENDMK
C⊗;
This file contains corrections, additions and updates to the UUO Manual,
including new UUOs that have been added since the manual went to press.
[ALL ENTRIES BEFORE THIS HAVE BEEN INCLUDED IN UUO MANUAL, THIRD EDITION.]

177.  TTYSET function 17 (get responsible TTY) returns -1 if no TTY
      is responsible.  Also, if you look in the system (eg, via PEEK
      or SETPR2) to find the terminal responsible for some TTY line,
      a value of 12 (TTY12) for the responsible terminal really means
      that no one is responsible for the particular TTY line.

178.  [Obsolete. See item 201.]
      A beep to a (responsible) non-ARPA PTY is a no-op.

179.  Somehow this didn't make it into the third edition:

      The SUPSOM bit (0,,1000) in the fourth word of a SETACT UUO
      activation table suppresses the CONTROL and META bits on all
      characters whose individual character bits are not on in the
      activation table.  This means that the activation table's
      character bits are used for two purposes--in special activation
      mode and in SUPSOM mode--but these two modes are not expected
      to be in use at the same time.  If SUPEOL is on, it takes
      precedence over SUPSOM.

180.  Error code 7 (GMM) to an IMP MTAPE means Gender MisMatch; ie, an
      attempt to connect two like-gendered sockets together.  Odd sockets
      may only be connected to even sockets and vice versa.

181.  XGP intercharacter spacing ('177 '1 '50 ICS) is now implemented.
      It takes one 7-bit byte as the new value for intercharacter
      spacing.  The intercharacter spacing is set to zero when you INIT
      the XGP, but is not reset to zero at any other time.  The
      intercharacter spacing value is the (positive) number of columns by
      which the X-position is incremented after each normal text
      character is printed (after the X-adjustment for character width).
      It is possible that use of this feature may generate lines that are
      too complex for XGPSER to print (usual warning).

182.  The system now allows up to =128 fonts (font numbers from 0 to =127).

183.  XGP MTAPE 7 is just like XGP MTAPE 1 (compiles a font) except that
      a four-word table follows the font identification number to specify
      which characters are to be loaded (compiled).  In this four-word
      table, each word contains the flag bits for =32 characters: the
      first word contains the bits for characters '000 thru '037, the
      next word for '040 thru '077, then '100 thru '137, and finally '140
      thru '177.  Within a given word, the flag bits occur from right to
      left in order of increasing character code, with the high-order
      four bits of each word ignored (those four bits should be zero).
      Thus bit 35 (0,,1) of the first word is the flag bit for character
      '000, bit 34 (0,,2) is the bit for '001, etc.  If the flag bit for
      a character is on, that character will be loaded when the given
      font is compiled; otherwise the character will not be loaded and
      any attempt to print that character in that font will be ignored.
      This MTAPE accepts only the uncompiled (.FNT) font format.  If the
      given file holds a compiled-format (.CFT) font, then an error will
      occur (illegal format file).  If no filename extension is given and
      no file has the given exact name, then only the additional
      extension .FNT will be looked for -- no .CFT file will be used.

184.  XGPUUO opcode 4 from the system to the Font Compiler is just like
      opcode 2 except that words 5 through 10 (octal) of the data block
      contain the four words from the user specifying which characters
      are to be compiled, in the same format as in XGP MTAPE 7.

185.  XGP ESCAPE 5 selects the font specified by the following 7-bit byte
      (e.g., '177 '5 FONT).

186.  The HNGTRP bit (bit 28--0,,200) in XGP I/O status word suppresses
      halt with error message on hung XGP (and probably hung P2).  UUOs
      take error return instead when this bit is on (just like LPT).
187.  The following new TTYSETs are defined:
	23	get GAG bit
	24	set GAG bit
	25	get NO-CONVERT bit
	26	set NO-CONVERT bit
      These bits correspond to the commands TTY [NO] GAG and TTY [NO] CONVERT
      except that TTY CONVERT clears the no-convert bit.  The GAG bit prevents
      anyone from linking to the terminal via the TALK command, and also
      prevents TTYMES to the terminal (except TTYMES to SIXBIT /TTY/ from the
      attached job).  GAG does not prevent beeps.  The no-convert bit
      applies only to physical terminals (not PTYs) which are not displays;
      when the bit is off (the default), the characters altmode, right brace,
      tilde, and not-equal are converted on input and output as they are for
      ARPAnet PTYs.  This means also that when the bit is off, only octal 33
      is interpreted as altmode on input.  If you have an old model 33 you
      may need to say TTY NO CONVERT or set this bit.  TTYSETs 23 and 25
      return the value 0 or 1 (all but bit 35 returned zero).  24 and 26
      use bit 35 of the TTYSET command word to set the bit.

188.  TTY image modes 10 and 11.  These modes permit input and output of
      all characters including null and ↑C, with no conversion, filling,
      etc.  If either of these modes is set in TTY IOS either by INIT or
      by TTYSET (or SETSTS), then filling and code conversion are disabled
      for any form of I/O, TTYUUO as well as buffered INPUT or OUTPUT.	In
      addition, beeps to the terminal are disabled.  Further effects for
      output: OUTCHR accepts 8-bit characters and does not generate
      parity.  (OUTSTR and other inherently 7-bit output methods still
      generate parity.)  For the OUT and OUTPUT UUOs, parity is not
      generated, and nulls will be output, if and only if the byte size
      of the byte pointer in the users buffer header is 9 or more.  (The
      user must set this after INITing the channel.)  The number of
      characters typed will be exactly the number deposited into the
      buffer by the user, so padding nulls in the last word in use in the
      buffer will not be sent.	Further effects for input: The eighth
      (parity) bit is made available to the user, and nulls are allowed.
      The 400 bit will be on in all characters input, to allow nulls.
      (A zero character is not allowed internally in the monitor.)  This
      bit may be ignored, except that it distinguishes a typed null from
      a padding null in buffered input.  (The user's buffer header must
      specify a byte size of at least 9, of course, to see that bit.)
      INCHRW and INCHRS will return 9-bit characters.  The line-at-a-time
      TTYUUOs (and RDLINE) should not be used while the TTY is in image
      mode, since line activators are not well-defined.  Modes 10 and 11
      are exactly the same on output; the difference on input has to do
      with when the program is awakened on an IN or INPUT UUO: in mode
      10, the UUO will return when any number of characters (greater than
      zero) are waiting; in mode 11, the program is not awakened until
      the TTY input buffer is half full.  The TTYSKP UUO can be used to
      find out if an INPUT will return immediately.  Modes 10 and 11 are
      undefined for local (DD and III) display terminals; in particular,
      they are not a good way to try to trap CALLs.  However, they do work
      on Datamedias; while a DM is in image mode, the DM output queues are
      disabled, and output will come only from the TTY output buffer.
      Also, the line editor is disabled for input, as are escape commands.
      (NUL is passed to programs in this mode.)

189.  The LOGIN UUO is legal only if JACCT is set, not whenever JLOG is off.

190.  New UFD format:
	words 0-3:  same as before
		4:  file length in words
		5:  BYTE (15)date written in system date format (21)time written
			in 15ths of a second after midnight *
		6:  last referenced date **
		7:  last dumped date **
	    10-11:  not used (yet)
	       12:  SATID (may be changed)
	    13-16:  4 words of special file info (as in disk MTAPEs 10 and 11)
	       17:  file offset (1 less than first logical record # in the file)
      *  The low order bit of this word is 0 for PST and 1 for PDT.
	 This date is always in Pacific Standard Time.
      ** These two words have the same format as they do in long LOOKUP blocks.
      This format does not apply to the MFD.

191.  New disk MTAPE 26:
	MTAPE CHN,[	'GODMOD'
			26
			'filename'
			'extension',,ERROR CODE
			UNUSED (must be zero)
			'ppn'
			ADDRESS OF 20 WORD BLOCK FOR UFD ENTRY TO BE STORED IN
				]
	ERROR RETURN
	SUCCESS RETURN
      Does a LOOKUP using the given information, but instead of storing what's
      normally put in a lookup block, it stores the 20 word ufd entry  starting
      at the address specified in the MTAPE block.  If the file being looked up
      is a UFD, the system generates a "ufd" entry and stores that rather than
      the actual entry from the MFD.  If the LOOKUP fails, then nothing is
      stored except the ERROR CODE, which should be interpreted the same as the
      the ERROR CODE for a normal LOOKUP.

192.  Include NEWPRV.JBR[S,DOC].

193.  TTYSET 27 and TTYSET 30 are get and set, respectively, for the
      "no-peek" bit.  This bit is totally unused by the monitor, but is
      set by LOGIN and other programs that read passwords during the
      time a password is in the TTY input buffer.  The PK program reads
      this bit and doesn't display the TTY's input buffer when it's on.

194.  New disk MTAPE 27:
	MTAPE CHN,[	SIXBIT /GODMOD/
			27
			UFD'S PROTECTION WORD STORED HERE
			UFD'S FILE INFO WORD 3 STORED HERE (DEFAULT PRO/GRP ACCESS)
				]
	ERROR RETURN, NO LOOKUP DONE
	SUCCESS RETURN
      If a LOOKUP has been done on CHN, then the MTAPE returns the protection word
      and the default protection/group access word of the UFD of the file looked up.
      If the file itself is a UFD then the "UFD" protection word is that of the MFD
      but the "UFD" default protection/group access word is that of the UFD (i.e.,
      the file looked up) itself.

195.  Update page 164 describing the 4 words of special info stored for a UFD on
      the disk:
	word 3: bits 10:35 are the group access bits for the UFD.

196.  "JOBNM1" at top of on p. 253 (Job Data Area) should be "JOBTM1".

197.  New low core pointer, location 261 points to the cell DAYLIT which
      is non-zero for daylight savings time.

198.  ENTER no longer lets you set the creation date of a file.  It is set
      to the current date when the ENTER creates the file, and is copied
      from the old version when the ENTER supercedes a file.

199.  New UUO: STDTIM AC, (CALLI 400055) is like ACCTIM but returns Pacific
      Standard Time.

200.  New XGP MTAPEs.

		MTAPE <chan>,ADR

	ADR:	10
		<number of scan lines output is returned here>

      MTAPE 10 returns the number of scan lines queued for output to the
      XGP since you inited the XGP.


		MTAPE <chan>,ADR

	ADR:	11
		<number of real formfeeds already output is returned here>

      MTAPE 11 returns the number of formfeeds (014's) that you have output
      that have already been sent to the XGP (not just queued -- however,
      the actual paper cut occurs about 25 seconds after the formfeed
      itself has been sent).

201.  PTYs are initialized with the GAG bit on.  The GAG bit is checked
      when the monitor decides whether or not to permit a TTYMES or BEEP
      to a PTY.  IMPBIT is no longer checked in this regard.  When a BEEP
      to a PTY is GAGged, the BEEP is given instead to the job owning the
      PTY.  BEEPs are never GAGged on non-PTYs.

202.  The GETPPN UUO, when given by a job with JACCT set, ignores jobs
      which don't have JLOG set in deciding whether or not to take the
      skip return.

203.  When a spacewar module is started, AC 7 contains the protection of
      the upper segment.

204.  The SWAP UUO, when starting a new job, will set the alias of the
      new job equal to that of the old job iff the PPN specified for the
      new job (word 5 of the argument block) is zero.  (Otherwise the
      new job is started with no alias, as before.)

205.  Typo on p. 84.  Sample UUO call "SHOWIT AC" should be "SHOWIT AC,".

206.  XGP appendix should explain difference between mode 0 and mode 13.
      (Which I think is that in mode 13 the byte size is 36.)

207.  TTYSET function 31 clears the line editor if the terminal is a display.

208.  XGP ESCAPE 6 is "select font and align at top".  '177 '6 <font number>.
      A relative baseline adjust is done to make the newly selected font
      line up at the top with the top of the previously selected font,
      unless no chars have been output on the current text line, in which
      case XGP ESCAPE 6 is the same as XGP ESCAPE 5 (font select).

209.  Any file LOOKUP error from a SWAP UUO trying to start up a new job
      stops the new job, not the old one.

210.  The INTIMS interrupt is given to the logger when an "interesting" RFC
      (ie, 1≤socket≤777 and socket is odd) comes in.  No network channels
      need be opened (in fact, the logger doesn't have any channels open).
      A job becomes the logger by setting the "LOGGER" cell in the system.

211.  The LGONCE bit (4000,,0) in the IMPSTB word says that the logger has
      already looked at this socket.  The system doesn't use this bit, but
      the user mode logger sets and uses it to avoid trying to service the
      same RFC twice.

212.  Following a conversation with Postel, interesting sockets now stop at
      377 instead of 777; sockets 400 and up are "private sockets".

213.  Sockets may be gensymmed by using -1 in the connect MTAPE block instead
      of a socket number.  A gensymmed socket is picked such that the next 5
      sockets are free.

214.  Spacewar process timeout causes the job to get SPACEWAR LOSSAGE and to
      to be stopped.

215.  Note that since the PTOCNT UUO gives you the number of characters in
      the output buffer, and since characters are transmitted on DMs from
      the DM queues instead of from the output buffer, you cannot use the
      PTOCNT UUO on a DM to decide whether or not the next PTRDS UUO will
      wait.  See item 221 below for the solution to this problem on DMs
      (also useful on other PTYs).

216.  IMP MTAPE 21 will return a gensymmed receive socket.  Gensymmed sockets
      are picked so the next 7 sockets (ie, a cluster of 8. sockets) are free
      as well as the gensym one.  The socket is returned in the second word
      of the MTAPE block.

217.  Note that only receive sockets may be gensymmed by IMP MTAPE 1.  An
      attempt to gensym a send socket will return the GMM error.  There
      shouldn't be any reason why somebody would want to gensym a send
      socket, of course, nothing prevents doing an MTAPE 21 and adding 1 to
      the returned value.

218.  SIXSER sends a 0 and a -1 in the date message to verify all bits.

219.  New TTYSETs:
	32	gets the temporary gag bit
	33	sets the temporary gag bit to given value in low-order
		bit of the function word.  The temporary gag bit is
		automatically cleared by the RESET UUO.

	34	makes the tty an IMP tty (sets IMPBIT) provided it is a pty.
	35	makes the tty a DM (sets DMLIN) provided it isn't already a display.

      On setting IMPBIT and DMLIN:

      It is now impossible to set either of these two line characteristics
      bits with the SETLIN or PTSETL UUOs or TTYSET function 1.  Only the
      two new TTYSET functions (34 and 35), which explicitly set these
      respective bits, are legal.  So if you have any programs that try to
      set either of these bits, you should convert to using the new TTYSET
      functions.  There is no indication of failure by SETLIN, etc., to set
      these bits other than the fact that the bits don't get set.

220.  PTWR1S/W uuos can no longer send ESCAPE/BREAK/CLEAR characters.  An
      attempt to do such gets illegal uuo error message.  TTYSET function 4
      should be used to send escape commands, and TTYSET function 31 can be
      used to clear the line editor.

221.  PTRDS UUO will never wait (not even for the first char) if the 40,,0
      bit is on in the byte pointer/address word that points to the place
      for the returned string.

222.  The functions of the LOGGER are now in the monitor.  The exec mode
      logger is disabled from firing up servers if MAINTM is set.  The
      job name = [LOGR] mechanism is gone.  The INTIMS mechanism still
      exists for the special user mode logger, which is normally not run.

223.  IMP MTAPE 13 has been recycled to mean "curse IMP".  It brings the
      NCP down and sets a flag to keep it down until an IMP MTAPE 12 is
      done.  MTAPE 13 requires an argument of SIXBIT/KILIMP/.  It is an
      Illegal UUO if it is not given this argument.

224.  Using ARPAnet sockets which are not in your working set as defined
      by the gensym mechanism is now reported on the CTY and on the user's
      console.	It is not an error to do so (yet).  The UPG privilege
      prevents this message (ie, programs which wish to use arbitrary
      absolute sockets should enable UPG first).  [yes, I know it's a
      crock]

225.  An IMP going down message no longer brings down the NCP in itself.
      It does print a warning message on the console though.  Later on
      it will warn users too.

226.  The NCP will now reliably go down when the IMP goes down.

227.  TTYSET 36 and 37 get and set the TTY GLASS bit.  If the bit is on,
      rubout echos as bs-sp-bs instead of using the backslash notation.
      Ignored on displays.

228.  The NCP will now reliably go up when the IMP comes up.

229.  OBSOLETE.

230.  New KILL UUO for the spy to autologout inactive jobs.  Killer job
      must have the MESPRV or this UUO won't do anything.

		MOVEI AC,<job number>
		KILL AC,

231.  New DETACH function for PTJOBX UUO (function 10) detaches
      the job that is on a given tty.

		PTJOBX ADDR

	ADDR:   <tty/pty to affect>
		10                      ;or SIXBIT /DETACH/

     This function skips on success (including if there is no job on the
     given tty).  The direct return is taken if there is already a
     forced monitor command pending for the given tty (in which case,
     you can try again momentarily and it will probably work).

232. SUPACT, SUPSCM, SUPALL, SUPSOM bits in SETACT UUO's fourth word
     all work for non-displays as well as for displays.

233. PTY writing UUOs can send 9-bit chars except to a PTY owned by
     the job giving the UUO.  The chars ↑C, ↑B, ↑U, etc., which are
     normally intercepted specially by the monitor for control
     functions, are interpreted as SU-AI graphic chars instead when PTY
     written by a non-owner (e.g., when PTY written to self).  The owner
     job can use the Backnext commands (e.g., ↑←C) to cause bucky bits
     to be added to characters and to send the graphic chars ↑C, ↑B, ↑U,
     etc.  "Owned" means the job got the PTY by PTYGET UUO.

234. IMP MTAPE 23 takes an argument of a host down code, as follows:
       RH:  Time expected back up:
          007777 bits → when we are expected back up.  7776 means unknown,
                 7777 means over a week from now.  Otherwise:
          007000 bits → day of week (0 = Monday, etc.)
          000760 bits → hour
          000017 bits → minutes/5
            Time is in GMT.
       LH:  Why we are unavailable:
         000017 Host dead reason:
                 0 → IMP sets this (random network lossage)
                 1 → IMP sets this (we took down ready without saying why)
                 2 → IMP sets this (we are tardy)
                 3 → IMP sets this (we don't exist to the knowledge of the NCC!)
                 4 → NCP initialization
                 5 → Scheduled preventative maintenance
                 6 → Scheduled hardware work
                 7 → Scheduled software work
                10 → Emergency restart
                11 → Power outage
                12 → Software breakpoint
                13 → Hardware failure
                14 → Not scheduled up
                15 → unused
                16 → unused
                17 → Coming up now
      The 777700,,770000 bits are ignored.  This UUO is used to tell the IMP
      why we are down for later when we go down.


235. The NUL: device now exists.  It is a black hole; on input it
     provides an immediate EOF and simply slurps up and discards all
     output.

     NUL: simulates most devices reasonably, however it has the
     device characteristics of no device (except that it can do input,
     output, and has a long dispatch table).  Also, you shouldn't
     expect the more esoteric UUOs for these devices to necessarily
     "do the right thing" (like IMP MTAPEs!).  ENTER, LOOKUP, RENAME,
     will always skip return without any argument checking, and USETO,
     USETI, UGETF, CLOSE, UTPCLR, and MTAPE are no-ops.

236. Don't expect the 777400,,770000 bits in IMP MTAPE 22 to be zero, although
     this is usually the case.

237. The TTYUSE bit, bit 5 (10000,,0), is no longer returned by the DEVCHR
     UUO (apparently it hasn't been since 1975).

238. IMP MTAPE 22 sends a reset to the host in the first word of the argument
     block.  It requires the job to enable UPG.  Don't do this unless you know
     what you're doing.  The other dangerous IMP MTAPEs have been changed to
     require the job to enable UPG (which any job can).

239. Reset Reply now purges our tables the way reset does.  A heinous bug
     in reset fixed.

240. The IMP service now has full 96.-bit leaders and can address the full
     range of hosts (all 2↑24 of them) on the network.  Look at IMPSER.DOC[S,SYS]
     on page 9 for more details.

241. IMP MTAPE 7 has been changed to accept a listen-style block and return
     one with the foreign host/socket filled in.  The only use for it is to
     know where to hack after a non-waiting listen.

242. IMP MTAPE 5 has been changed to return a set of addresses.  It is only
     really useful to IMPSTA.  Look at IMPSER.DOC[S,SYS] if you're really
     interested in what these values are.

243. TTYSET 40 is SET SPEED for an auto-baud-detect line on the DCA
     scanner.  The allowed arguments are
	0	110 baud
	2	150 baud
	3	300 baud
     in the right half of the command word.

244. The following references to the value 20 in the UUO Manual should
     substitute "DPYL0" for "20".  The value DPYL0 is equal to SCNNUM
     (the number of non-display TTYs), whose value is given in the
     high-order 9 bits of the word at Low Core location 221.
	(a) The TTREAD UUO's main description.
	(b) The TTREAD UUO's description of bits 12:17.
	(c) The description of Low Core location 237 (LETAB+20, should
	    be LETAB+DPYL0).  Flush explicit name of first III's TTY.
	(d) The description of Low Core location 303 (ASTAB).

245. The following references to the value 26 in the UUO Manual should
     substitute "DDL0" for "26".  The value DDL0 is equal to SCNNUM+DPYNUM.
     The values of SCNNUM and DPYNUM are contained in the first two 9-bit
     bytes of the word at Low Core location 221.
	(a) The description of bits 11:17 in a Video Switch Request for
	    the VDSMAP UUO.
	(b) The description of Low Core location 335 (VDTIE).

     Also, the last example under the VDSMAP UUO should be changed to use
     a different line number when TTY26 is no longer a DD.

     Also, Low Core location 237 should be described as containing
     LETAB+DPYL0, where DPYL0 is equal to SCNNUM (the first 9-bit byte
     of Low Core 221).

     Also, the description of Low Core location 270 (PTYJOB) should say to
     index into the PTYJOB table with the PTY's line number minus PTYL0,
     where PTYL0 is one more than the sum of the first three 9-bit bytes
     in Low Core 221.

246. [Modified by entry 268 on next page.]
     In buffered mode, an IN or INPUT UUO with a nonzero address field
     (actually an address field ≥4) changes the buffer address of the
     next buffer to be filled by the system to the address given.  (The
     specified value is stored in DEVIAD in the DDB.)  It is the user's
     responsibility to ensure that the address points to the second word
     of a buffer in a well-formed buffer ring, and to update the 3-word
     buffer ring header.  The UUO does not actually do any input.  The
     proper sequence to move a buffer ring is
	1. Do the IN CH,ADDR as described above
	2. BLT the buffers, and modify the address pointers
	3. The next IN (or INPUT) will use the new buffers.
     It is not necessary to do a WAIT UUO before the IN CH,ADDR since
     that UUO does a WAIT before modifying the address.  Note that the
     argument is the address of the next buffer into which the system
     should transfer data, not the next buffer from which the user will
     read data.

247. LASTDISASTERTIME now contains the time of the last call into EDDT,
     in ACCTIM format.  Parity errors also set this guy.

248. The status bits as returned by several IMP MTAPEs now includes the
     following host down information.
       Code=0 → Host up or down status unknown.
       RH:  Time expected back up:
	  777700 bits → when host is expected back up.	7776 means unknown,
		 7777 means over a week from now.  Otherwise:
	  700000 bits → day of week (0 = Monday, etc.)
	  076000 bits → hour
	  001700 bits → minutes/5
	    Time is in GMT.
       LH:  Why host is unavailable:
	 000017 Host dead reason:
		 0 → unknown
		 1 → Host took ready line down without saying why
		 2 → Host is tardy
		 3 → Host does not exist (to the knowledge of the NCC)
		 4 → NCP initialization at the remote host
		 5 → Scheduled preventative maintenance
		 6 → Scheduled hardware work
		 7 → Scheduled software work
		10 → Emergency restart
		11 → Power outage
		12 → Software breakpoint
		13 → Hardware failure
		14 → Not scheduled up
		15 → unused
		16 → unused
		17 → Coming up now
	 000360 Host inaccessable reason:
		 0 → Destination IMP unreachable
		 1 → Destination host dead
		 2 → Communication with destination host is impossible,
		      because they don't have the extended leader capability
		      and some turkey moved us out of the 0-377 address range.
		 3 → Communication with destination host is prohibited
		≥4 → unused
249.  TTYSET operation number 41 is "hang up modem", only works on DCA
      port with modem control.  No-op if not implemented.

250.  CALLI 400057 is WHOAMI.  No argument.  Compares your jobname to a list
      of jobnames the system knows about; if you're in the list it saves
      your job number in a cell in the system for whatever purpose the
      system has in mind.  However, if there is already a job that has
      claimed to be who you are claiming to be, then the other job continues
      and your job is stopped with an error message.  So far the only name
      in the list is WHOPHN, for the phantom job which writes the display on
      the available channel.  RESET clears the cell if you are the magic
      job.

251.  Include DLNSER.DOC[S,SYS]

252.  TTYSET setting operations can be performed on specific TTYs just like
      getting operations -- the 400,,0 bit must be on and the TTY number
      should be in the 177,,0 bits of the function word.  However, you can
      do setting operations only on TTYs that are yours (i.e., (1) the TTY
      your job is running on, (2) an INITed or ASSIGNed TTY, or (3) a PTY
      that you own).  Setting operations on other TTYs are no-ops, with no
      indication of failure.

253.  In the UPGIOT UUO for a DM, the DMATXY bit (200,,0) in the left half of
      the first header word means that when this user display program finishes,
      any entries in the wholine queue for this DM should be flushed (to
      establish cursor stability briefly).  Also, the DMXLE bit (100,,0)
      will suppress all but UPGIOT output to the DM until this transfer
      has finished.  This is needed if this transfer is a text shifting
      operation and you want to position the line editor somewhere in the
      middle of the screen *after* the shifting is finished but you want
      to use overlapped mode instead of waiting for the shift to finish.
      Note also that the DMXLE bit on in a user program header block flag word
      means that user program output is given highest priority until the given
      user display program has finished.  Thus the line editor and page printer
      cannot even start before the user program, much less interrupt it.

254.  Setting a TTY's WIDTH value to ddd, where =128 ≤ ddd ≤ =255,
      completely suppresses the monitor's normal insertion of CRLFs for
      long lines on the TTY.  The TTY width can be set with TTYSET UUO
      function 5 and with the TTY WIDTH command.

255.  DEVOAD and DEVIAD no longer contain PROG in index field (LH);
      haven't for a long time.

256.  The CORE UUO does not guarantee that new core is zeroed before being
      given to the user job; in fact, it is likely to contain randomness.
      A properly written user program isn't be affected by this.

257.  TTYSETs 42 and 43 get and set, respectively, the job number whose
      wholine is displayed on the given terminal.  Function 42 returns -1
      if the terminal is not a display.

258.  When displaying in graphics mode on DDs, one has to display every
      fourth line in order to win.  When displaying consecutive lines,
      besides being atrociously slow, the DD also refuses to display more
      than 6 graphic lines per UUO.  The trick is to output every 4th line
      and then go back to fill in every line = 1 mod 4, etc.

259.  New TTYSETs:
	44	Get current padding character for DM.  Returns -1 if not DM.
	45	Set padding character for DM.  No-op if not DM.
	46	Get baud rate used in DM padding calculation.  -1 if not DM.
	47	Set baud rate used in DM padding calculation.  No-op if not DM.

260.  New AAO privilege (4.4 bit) says you have ownership rights to your
      disk PPN when set in passive privileges (JB2PRV).  When set in active
      privileges, does something completely different (for a good time, read
      the code).  AAO goes away on an ALIAS monitor command or a DSKPPN UUO
      which sets your disk PPN.

261.  New SETPPV UUO, CALLI 400124, sets passive privileges (JB2PRV) from
      its argument, requires AAO active.

262.  TTYSET 14 -- diddle special DM bits -- has two new operation bits
      (which appear in the right half of the function word):
	Bit 29  0,,100	Flag this DM as a model 3025.
	Bit 28  0,,200	Flag this DM as not a model 3025.
      Currently, the significance of being flagged as a model 3025 is that
      different padding is used, DM128 is assumed (can display control
      characters), and when the cursor is supposed to be "off screen", it
      is positioned at home instead (since the 3025 cannot make the cursor
      disappear.

      The DM3025 bit appears in the right half of the DM flag word,
      which is returned by TTYSET 21.  DM3025 is 0,,200 (bit 28) in DMFLAG.

263.  The DDCHAN UUO, if bit 2 (100000,,0 bit) is set in the AC and if you
      have the DEV privilege ACTIVE, takes bits 10-17 (377,,0) of AC as the
      use code instead of using your job number.  DEVPRV must be SETPRVed.

264.  As of 8.73/A, the LOGIN UUO allows a phantom (ie, a job with JLOG off)
      to set its PPN.  It will not allow the phantom to set its privileges;
      nor will it set JLOG (ie, the phantom remains a phantom).  This allows
      FTP programs to win without running with the REA and WRT privileges.
      Previous systems make LOGIN illegal unless JLOG is clear and JACCT is
      set.

265.  The UUO Manual's sample calling sequence for the TMPCRD UUO uses
      the TMPCOR UUO by mistake.  Should say "TMPCRD AC,".

266.  8.73/A allows the "read info" MTAPE function for DSK, however, the
      password is not returned unless the INF privileged is enabled.  Previous
      systems make this an illegal UUO unless INF is enabled.

267.  Only a DISMIS UUO may be used to dismiss a KA-10 spacewar program.
      All other UUO's are illegal on the KA-10.

268.  A buffered mode IN or INPUT with nonzero eff. addr. (actually must be >3)
      now checks the argument to make sure the buffer pointed to is empty, i.e.,
      the word at the specified address must have its sign bit off.  If not, the
      UUO searches through the buffer ring and uses the first empty buffer it
      finds.  If all buffers are full, it uses the one pointed to by the UUO.
      If it tries 100 (octal) buffers without finding either an empty one or
      the end of the ring, it goes to UUOERR.  This means the new buffers must
      be set up before doing the UUO; the new sequence of events is
	1.  Do a WAIT
	2.  Move the buffers around in core
	3.  Do the IN UUO

269.
∂14-Nov-78  0521	TVR  	ADSMAP   
CAVEAT:	If you have more than one job connected to your Datadisk console and
	you do a temperary audio switch selection via ADSMAP, a RESET on any
	of your jobs will cancel the selection even if that job was not the
	one which made the selection.

Perhaps this should be noted in the next UUO manual?

270.  [THIS ENTRY IS NOW OBSOLETE!  SEE 272 BELOW.]
      New procedure for moving output buffers (cf. 268 above):
	1.  If you have a partially filled output buffer, output it by
	    OUT or OUTPUT UUO.
	2.  Give an OUT or OUTPUT whose effective addr points to any
	    of what will be the new output buffers.  This UUO will
	    force out any waiting buffers, put the new buffer address
	    into the buffer ring header, and set the sign bit of the
	    first word of the header to indicate that the new ring
	    is not initialized.
	3.  Now set up the ring pointers in the new buffers.
	4.  Now do an OUT or OUTPUT (eff addr 0) which will simply
	    check the new buffer ring and make it ready for use, not
	    actually causing any output.
      This procedure will work even if the old and new buffer areas
      overlap.  If, however, you have a partially filled buffer you
      don't want to output until after you move the buffers, you have
      to do steps 2, 3, and 4, then move the data from the old buffer
      into the new buffer, being sure to keep the byte pointer in the
      buffer header correct.

271.  RUNMSK, GDPTIM, and LTHUUO are now completely flushed.

272.  270 is obsolete.  New procedure for moving output buffers:
      First move the buffers, then do the OUT UUO with nonzero E.
      This will find the first empty buffer after a full buffer
      and set DEVOAD to it.  You set up the buffer header yourself,
      as for input.

273.  LIV privilege now means only that the job is never auto-logged-out
      (it may be detached).  It is a passive priv but explicitly disabled
      whenever any program is run by monitor command.  New passive priv
      DET means that auto-detach is preferred to auto-logout; can be
      set by anyone by command or UUO.  (DETPRV = 0,,100000)

274.  Location 341 points to the DDBCNT job table.  This table has one
      word per job number, which is AOSed on an INIT or OPEN for any
      device other than TTY or DSK (or new-style UDP), and on an ENTER
      on DSK (or...).  It is SOSed on RELEASE of non-DSK, non-TTY, and
      either on CLOSE or RELEASE of a disk channel open for writing.
      It is zeroed on RESET.  The table is meant to help smart autologout;
      the spy will prefer to log out jobs for which this entry is zero.

275.  The owner of a PTY gets (if enabled) the INTTTC interrupt if the
      PTY becomes a DM or a non-DM, or goes into or out of image mode.

276.  Section 13.4 on DM display output should mention that the character
      33 sent to a DM128-type Datamedia causes the next character to be
      displayed no matter what it is (even if it is a control character).
      For DM3025-type DMs, however, the next char is displayed only if it
      is a control character (0:37) or 177 (the remaining characters may
      cause control functions when following a 33 on a DM3025).

277.  The P2UUO UUO (CALLI 400125) is used to test and modify the state of
      P2 in a FTP2SP system.  The AC field of the UUO (not the contents of
      the AC, but the field itself) determines the precise UUO function:
			0 - TEST P2 MEMORY UP
			1 - TEST P2 RUNNING
			2 - SET P2 MEMORY UP
			3 - SET P2 MEMORY DOWN
			4 - GET P2 MEMORY AS HISEG WRITEABLE
			5 - GET P2 MEMORY AS HISEG WRITE PROTECTED

      Function 0 takes the skip return if P2's memory is working and
      connected to the system.  It takes the direct return if the memory
      was nonexistent when the system was reloaded or has been declared
      down at reload or while the system was running.

      Function 1 takes the skip return if P2 is actually running its
      system.  (The P2 system might be hung, or even halted, but it
      has set the flag saying it's up and has not been declared down
      by either processor.)

      Function 2, which requires the DEV privilege, declares that P2's
      memory is now online if it had been down.  Note that if the memory
      is really still not connected, this will crash the system!  This
      function always takes the direct return.  (It stops the job if
      not privileged.)

      Function 3, which also requires DEV, declares P2's memory down.  It
      stops the P2 system if it had been running.  It takes the skip
      return if successful--it requires three pages of other memory to
      be available to hold the system data normally shared between the
      two processors.

      Note that functions 2 and 3 require the DEV privilege in the job's
      ACTIVE privileges.

      Functions 4 and 5 get all of P2 memory as your job's upper segment,
      writeable or write protected respectively.  They both take the skip
      return if successful.  They will fail if P2 memory is down; function
      4 will also fail if you do not have the ACW privilege enabled.

278.  The PHPEEK UUO (CALLI 400126) takes a fullword physical address in
      the AC argument and returns in the same AC the contents of that
      word of physical memory, or zero if there is no such word.  Note
      that, although the highest possible address is only 22 bits long,
      bits 0:13 of the argument must be zero or the UUO will just return
      a zero result.  If P2 memory is up, it is in words 14 000 000 through
      14 377 777 of P1 physical address space.  P3 memory is not on P1's
      memory bus, and cannot be read with this UUO.  The PEEK UUO has been
      modified so that it interprets its argument as an 18-bit exec
      virtual address, ignoring the left half of the argument word.

279.  The PTRDS UUO checks only the 7700,,0 bits of the possible byte
      pointer to determine whether to keep the specified byte size and
      position or to use 7-bit bytes starting in the high-order byte
      of the addressed word.  Thus, the user can specify any byte-size
      such as 9-bit bytes in order to detect image mode output characters
      that have the 400 bit on.

280.  XGP error code 5 now means data missed in either buffered mode or
      dump mode.  This error comes along with the I/O status error bit
      IODERR (0,,200000).

281.  INTFOP bit (40000,,0) in interrupt enablings gets interrupts when
      user on PTY flushes output (i.e., types ↑O if not on DM, or types
      EDIT-CLEAR if on DM).  The job controlling the PTY gets the
      interrupt (not job running on PTY).  The telnet servers will detect
      this interrupt and tell the network to flush any outgoing text that
      is in transit.

282.  DM display program output (UPGIOT) that does inserts and deletes
      to move text around on the screen should be done with the USERGO
      bit set to prevent interruption while other pieces of the screen
      (e.g., the page printer and line editor) are temporarily in the
      wrong place.

283.  TTYJOB UUO should say zero is returned if there is no such job.

289.  (obsolete)

290.  PTJOBX function 11 is PDETACH, which is just like DETACH (10)
      except that if successful in the detach, it also makes the
      detached job a phantom (i.e., turns of JLOG).

291.  TTYSET function 50 gets the NO-DELETE bit and TTYSET function 51
      sets this bit from the low-order bit of the function word.  The
      NO-DELETE bit is also set by the command TTY NO DELETE and cleared
      by TTY DELETE.

292.  Meaning of FULTWX:
	FULTWX on means that the line is "self-echoing full duplex", i.e.,
	system echoing is not necessary.  TTY ECHO clears FULTWX, and 
	TTY NO ECHO sets it.  (The manual has these two commands interchanged.)

293.  LASTDISASTERTIME (low core pointer at 256) contains DATE,,TIME IN SECS
      (not uptime as previously claimed).

294.  In the SWAP UUO, if the core size specified in the GETADR section is
      zero, the new program is given the amount of core that it was saved
      in.

295.  The DPYPOS and LEYPOS UUOs now use (essentially) all 18 bits of
      position for DMs, in order to allow positioning even beyond line 36
      on a (possibly simulated) DM.  The interpretation of the position is
      the same as before (1000 octal is the top of the screen and -1000 is
      the 24th line; lines beyond the 24th are addressed by decrements of
      2000/24 per line).  Also, the maximum permissible DM screen height
      allowed by the system is now 62 (decimal) lines.  (For IIIs and DDs,
      there is no effective change, since the whole III and DD screen
      could already be addressed.)  In actuality, the 400000 bit in the
      LEYPOS address field is ignored except that this bit can be set
      non-zero to ensure a non-zero value in the address field (a zero
      value undoes any previous LEYPOS in effect).

296.  Lowcore 257 contains the address of TIMDAT (date,,time in secs).

297.  IMP MTAPE 24 will attempt to unwedge a connection in allocation wait.
      This function requires UPG and is intended for network wizards only,
      as it randomly mauls a connection's allocation (essentially, it fakes
      receiving a 4 message, 100 bit allocation from the remote host).  It
      takes a connection index (which changes in real time!) for a single
      argument and skip returns if it succeeds.

298.  The manual's example section (Section 14) should be referenced by the
      sections being exampled.

299.  TTYSET function 52 sets the DM width of your terminal to that given
      in the right half of the function word.  This function will be a no-op
      if either your terminal is not already known by the system to be a DM
      or if the given width is not between 16 and 96 inclusive (current
      limits).  For now, the width MUST be a multiple of 8; if it is not,
      then it is truncated to the next lower multiple of 8.

300.  The referenced-date word in UFDs, long-block LOOKUPs, and disk
      retrieval will soon include more info (including a count of days
      referenced) of yet-undefined format.  Programs that use the date
      should AND the word with 0,,77777 before printing to get only the
      date referenced. -- ME

301.  The ICTRAN bit in the IMP I/O status word means that an incomplete
      transmission occured, as of system 9.06/C.  ICTRAN is the 4000 bit.

302.  The IOIMPM bit in the IMP I/O status word means that an IN or OUT
      UUO was attempted when there was no connection open on that channel.

303.  The BLOK bit (100 in IMP I/O status word) indicates that the connection
      is in a RFNM wait.

304.  The IO%RDY bit (2000 in DLN I/O status word) indicates the Dialnet port
      received a good packet from the other side.

305.  The cell UPTIME (pointed to by some lowcore location) counts only ticks
      the system sees, not those it misses, for example while in DDT.  It does
      not count real time, only system-active time.

306.  MTAPE 16 for the disk is permanent really only if file open for writing,
      normally or in RA mode.

307.  As of system 9.06/G, the IOIMPM bit will be set in the DLN I/O status
      work if Dialnet I/O is attempted without an open connection.  Previously
      it stopped the job with an error.

308.  For disk files, the left half of the word containing the date
      referenced now contains a count of the number of days on which the
      file has been referenced (since the date last written).  The count
      is zero for any file that has been referenced only on the date
      written, and the count is incremented once for each day thereafter
      on which the file is referenced.

309.  Bit 5 (10000,,0) of the dump date word (sixth word returned on
      long lookup)is the REAP bit, indicating that DART should P-dump
      twice and then delete the file.

310.  Device VRN is the Varian Plotter, driven from P2.  It can be
      opened only in modes 17 and 117.  The format of data for device
      VRN is exactly like that for device XGP in mode 17 (and 117),
      but the "cut the paper" bit is currently ignored for the VRN
      (in the future it might mean "draw a line of some length on the
      paper so the paper can be cut here later").  The VRN and XGP
      are interlocked such that they cannot both be INITed
      concurrently.  An attempt to INIT one while the other is busy
      will fail or wait (depending on the INIT bits and/or your
      answer to a question about waiting).  It IS possible for both
      of these devices to be concurrently ASSIGNed.

311.  An IOWD for the VRN or XGP in mode 117 that becomes illegal
      because the user changed the IOWD or the user core size while
      the XGP was running in overlapped mode will cause the IOIMPM
      error bit to come on in the I/O status word with major error
      code 16.  The MTAPE that reads the error code will return the
      out-of-bounds user address in ADR+2.

312.  Any error reported by the VRN while data is being transmitted
      to it will generate error code 6, with the error reading MTAPE
      returning in ADR+2 the CONI bits of the VRN at the time of the
      error.  The possible right-half error bits are listed below (some
      other, non-error, bits will probably also be on).

	VNOTOK←←40000  ;Device not ready (e.g., off-line or power off)
	VOFFLN←←400    ;Off-line
	VSUPLO←←200    ;Supplies low

313.  The MTAPE UUO for the VRN takes exactly the same format as the
      MTAPE for the XGP.  However, only MTAPEs 0, 4 and 5 are legal for
      the VRN (since text mode is not implemented for the VRN); each of
      these three MTAPEs does the same for the VRN as it does for the
      XGP.  (MTAPE 4 returns ADR+3 as zero iff any of the above 3 error
      bits were on in the last VRN CONI).

314.  The DWCNT field for the GCW of XGP and VRN dump mode output is
      now one bit bigger than before (now 7 bits wide, consisting of
      the 0,,177 bits of the GCW).

315.  The FILUSR UUO [CALLI 400046] can be used to find out what job(s)
      have a particular file open.  The call is

		MOVEI AC,ARGS
		FILUSR AC,
		 <ERROR RETURN - NOT A DISK DEVICE>
		<NORMAL RETURN>

	ARGS:	SIXBIT /DEV/	;MUST BE DISK OR NEW-STYLE UDP, 0 MEANS DSK
		SIXBIT /NAME/
		SIXBIT /EXT/
		BLK
		SIXBIT /PPN/

	BLK:	BLOCK =16

      On return from the UUO, BLK contains a list of 9-bit bytes,
      terminated with a zero byte.  Each byte contains a job number
      in the rightmost six bits, and a flag in the 400 bit which
      will be on if that job has the file open for output (including
      read/alter mode).  (The job may also have the file open for
      input on another channel.  Each job number will only appear
      once no matter how many channels have the same file open.)
      The 200 and 100 bits in each 9-bit job-number byte are reserved
      for future use.

316.  Clarification: The UPGIOT UUO for a DM or a III copies the text out
      of your core image into system free storage and outputs it from
      there.  So you can use overlapped mode and then clobber the core
      where the program was as soon as the UUO returns (for DMs and IIIs,
      but not for DDs which do the display output directly from your core
      image).

317.  The following interrupt bit was added some time ago.

      Bit  Octal      Name      Interrupt Condition
      21   0,,40000   INTSIX    The PDP-6 has interrupted with a message (or
				something).

318.  Typeout by the TTYMES and NULMES UUOs to any terminal other than
      'TTY' will not be suppressed by typing ESC O (↑O on non-displays).
      Thus you can suppress your own program's output without suppressing
      messages sent to you by other people.

319.  The following UUOs are added for DM NOEDIT mode (see NOEDIT/D
      for full information):

UUO to set up a macro definition for a character:

call:	MOVEI AC,ADDR
	CHRMAC AC,		[CALLI 400065]
	 <error return -- code in AC>
	<success return>

ADDR:	CHAR,,LENGTH
	BYTE (12)XX,XX,XX
	ETC

CHAR is the character which is to be redefined.  It must be a 7-bit
character, and must be one of the redefinable ones.
LENGTH is the number of 12.-bit bytes in the macro definition.
If LENGTH is zero then any previous macro will be flushed and
the character will have its default meaning.
The bytes are standard 9-bit SAIL characters, with the following
special codes allowed:
	0600	CALL
	2000	quote following char (↑Q)
	2001	quote with CONTROL (↑P)
	2002	quote with META (↑V)
	2003	quote with CONTROL-META (↑W)
	4041	BREAK
	4042	ESCAPE
	4044	CLEAR
	4241	HOLD
	4244	UNHOLD
	4444	FLUSH DM QUEUES
If the UUO takes the direct return, the AC will contain one of these codes:
	0  UUO not defined (FTNOED off) or system error
	1  Job's TTY not a NOEDIT display
	2  CHAR not a redefinable character
	3  Trying to redefine the only ESCAPE character
	4  LENGTH is greater than maximum allowed
	5  Some byte isn't an allowable SAIL character


UUO to read a character macro:

call:	MOVEI AC,ADDR
	GETMAC AC,		[CALLI 400120]
	 <error return -- not a NOEDIT DM>
	<success return -- ADDR is set up as CHRMAC arg block>

ADDR:	CHR,,<length returned here>
	BLOCK 6 <12.-bit bytes returned here>

Also, the following TTYSET functions are added:

	53	;GET NOEDIT ESCAPE CHARS
	54	;SET NOEDIT ESCAPE CHAR (SIC)
	55	;GET NOEDIT FLAG
	56	;SET NOEDIT FLAG
	57	;GET HTOGGL FLAG
	60	;SET HTOGGL FLAG
	61	;GET NOEDIT MODE
	62	;SET NOEDIT MODE

55-60 have arguments and values of a single bit.  53 returns a word
with one bit per possible ESCAPE character; the bit is 1 if that
character is in fact an ESCAPE.  The bits are:

	char	octal	bit	octal

	↑@	000	35	1
	↑H	010	34	2
	↑I	011	33	4
	↑J	012	32	10
	↑K	013	31	20
	↑L	014	30	40
	↑[	033	29	100
	↑\	034	28	200
	↑]	035	27	400
	↑↑	036	26	1000
	↑←	037	25	2000

54 takes a character code (ASCII) as its argument.

61 and 62 get and set a 4-bit field.  The TTY must be in a NOEDIT mode
for these to be meaningful.  The four bits are

	bit	octal	meaning

	32	10	ALL-QUOTE mode (including BUCKY-ALLQUOTE)
	33	4	any QUOTE mode (anything but NORMAL)
	34	2	META- or CONTROL-META-QUOTE or -ALL-QUOTE
	35	1	CONTROL- or CONTROL-META-QUOTE or -ALL-QUOTE

All four bits are zero for NORMAL mode.
320.  The sign bit of the XGP right margin word (in MTAPEs 2 and 3,
      read and set margins) means "suppress wraparound when text passes
      the right margin."  With this bit on (the default is off, i.e.,
      text wraps around), any character starting beyond the right
      margin is ignored.  A carriage return, or other explicit column-
      setting command, will cause printing to resume.

321.  The line editor command META-<bs> no longer clear line editor
      insert mode.  This allows NO-EDIT-KEY display users to type
      RUBOUT (which turns into META-<bs>) while in insert mode, just
      like DD users type BS, without clearing the insert mode.  This is
      the only META command which doesn't clear insert mode.

322.  For the XGP, there is a new No-Wraparound mode for text output after
      the right margin has been reached.  In this new mode, all text beyond
      the right margin is ignored, until an explicit absolute column is
      selected, for instance with a CR.  In Wraparound mode (the default and
      formerly the only mode available), a CRLF is inserted and the text
      continues on the next line whenever the right margin is exceeded.

      No-Wraparound mode is enabled by setting the sign bit of the
      right-margin word of the XGP margin setting MTAPE (function 3, sign
      bit of word 5).  The XGP margin reading MTAPE (function 2) returns the
      sign bit of the right-margin word (word 5) as the No-Wraparound mode
      flag.

323.  The MTAPE 5 for XGP and VRN, called "pseudo-close", is useful
      particularly in overlapped video mode (mode 117).  In that mode, when
      you have no more data to output, you should do an MTAPE [5] instead of
      a CLOSE (or at least before any CLOSE) to tell the system that no more
      data is to occur.  If you do a normal CLOSE UUO instead, then you will
      very likely get the I/O status bit IOTEND, meaning "data ran out
      before close done" (which can happen otherwise if you don't always
      have the data ready for the device when it needs it).  A normal CLOSE
      UUO waits for output to finish before it does ANYTHING, but that means
      that the XGP or VRN service routine will run out of data before
      finding out that you have done a CLOSE, so it will turn on the IOTEND
      bit.  And that will make it impossible to tell whether you got the
      IOTEND error actually in the middle of the data, which is where it can
      affect the output.  When IOTEND comes on, the XGP will cut the paper
      and the VRN will slew out the paper.

324.  In the "extended display service", the terminal dependent flags
      formerly kept in the right half of the DMFLAG word of the dpy hdr
      (returned by TTYSET 21) are now kept elsewhere.  See the description
      below of TTYSET function 63, which returns the new bits and more.

325.  The baud rate used for padding, set by TTY PADBAUD and some TTYSET,
      is remembered only to the next lowest 50 baud.  (0-49 map to 0, etc.)
      This precision is not guaranteed to be constant.

326.  Three new TTYSETs: (NOTE: The first two are still subject to change)
	63	Returns information about the current display type of the
		given terminal in the block pointed to by the right half
		of the function word:
		    ADDR+0/sixbit display type name
		    ADDR+1/display height
		    ADDR+2/display width
		    ADDR+3/padding char
		    ADDR+4/padding baud rate
		    ADDR+5/tab flag in low-order bit (bit on if dpy has tabs)
		    ADDR+6/EDITKY LH bits mask,,EDITKY LH bits
		    ADDR+7/DPYDES LH bits mask,,DPYDES LH bits
		    ADDR+10 thru ADDR+13/ reserved for future use
		The sign bits of words 4 & 5 may be on, in order to make a
		set-dpy-type TTYSET function (64, see below) work when
		given back the block returned by this function.  For the
		same reason, the left halves of words 6 and 7 will be
		returned with ones in (at least) the positions for bits
		(in the right half) that can be specified by the user.
		See function 64 below.

	64	Sets the display type of the given terminal from the
		information supplied in the block pointed to by the right
		half of the function word.  The information specified by
		this function is the same as that returned by function 63
		above.  Word 0 of the parameter block should contain the
		official SIXBIT name of some display type that is
		supported by the system; otherwise, this function will be
		a no-op (see the display types listed in
		DISPLA.ME[UP,DOC]).  However, parameter words can contain
		zero to indicate that the default values for the
		corresponding parameters should be used (the defaults
		depend on the display type).  To force word 4 or 5 to be
		non-zero, you can turn on the sign bit (needed if the
		parameter value specified in the right half is actually
		zero -- note that the padding character is not allowed
		to be zero).  Only the right half of each word is actually
		used to set the given value; unused bits in the left
		halves of parameter words should be left zero.

	65	Makes the given terminal NOT a display (like TTY NO DM).

327.  Include the rest of the character codes for the Analex LPT
      (cf Analex Instruction Manual pp1-4:1-5)

328.  Two new TTYSET UUO functions:
	TTYSET function 66 - Re-initialize the display (TTY INITIALIZE).
		The given terminal, which must be a DM-type display,
		is re-initialized, as by the TTY INITIALIZE command.
		This is useful for resetting settable tabs that may
		have gotten clobbered somehow, or for restoring the
		terminal to the correct operating state after being
		powered off, etc.  Function 67 (below) will make the
		system simply reset your tab stops, but without redrawing
		any text; function 66 will simulate a BREAK P to redraw
		the page printer.

	TTYSET function 67 - Set tabs, if any, on display terminal.
		Simply re-sets the tabs for the given terminal, provided
		the terminal is a display with tabs.  Note, however, that
		this function doesn't clear the previous tab stops, so if
		there were some that weren't in multiple-of-8 columns,
		then those bad tab stops will remain, and will probably
		screw up output.  To clear bad tab stops while re-setting
		the right ones, use function 66.

329.  The left half of low-core 343 contains a pointer to the PSB, if
      P1 is a KA (or equivalent, such as F2).  The right half still
      points to the EXPGT.  Both of these are virtual addresses.

330.  The TTREAD UUO now returns (immediately) the last known state of
      the microswitch keyboard keys, and at the same time requests the
      state from the keyboard.  Thus the first TTREAD UUO for a given
      keyboard may return randomness, but subsequent ones should return
      very recent information.

331.  The following warning NO LONGER APPLIES to ANY version of WAITS:
	A spacewar UUO that attempts to reference any accumulators will never
	access the correct set of ACs (whether the AC is referenced
	as an AC or as a memory location); and a UUO that returns
	results in the ACs may in fact return the results in the ACs
	of the job's main process (if the main process is waiting in
	the middle of a UUO), thus clobbering whatever the main process
	had in its AC(s)!
      Spacewar UUOs now reference the ACs correctly on both the KL and the
      F2 versions of WAITS.                             

332.  The UGETF UUO for the disk returns the new record number in the
      right half only of the cell pointed to by the UUO; the left
      half of the destination word is untouched.  And on dectapes in
      UDSD mode, the returned word has the next block to write in the
      LH and the next block to read in the RH).  (The Dectape writeup
      of UDSD mode has the halves of UGETF's result reversed.)

333.  TTYSET 70 returns the LINBIT word for the given TTY.  This word has
      the default line characteristics (in the LH) for that TTY and the
      DCA port number (if any) plus the 400000 bit in the right half if it
      is a DCA TTY.  If the DMLIN bit is on in the LH of the returned
      word, then the TTY is know as a "permanent DM-type display".

334.  User interrupt code for an old style interrupt is no longer ever
      started with the BIS (byte-increment suppress) flag on.  Formerly
      a bug caused this bit to be on for the interrupt routine if this
      bit was on in the trap PC.  This doesn't affect new-style
      interrupts, which get their entire set of PC flags from the left
      half of JOBAPR (with user mode forced on, of course).

335.  TTYSET 71 finds out if the given TTY is enabled (as with TTY EXIST)
      or disabled (as with TTY NO EXIST).  If the given TTY is on the DCA
      TTY scanner and is enabled, then this function returns a value of 1.
      If the TTY is not on the DCA, or if it is on the DCA and is not
      enabled, then this function returns a value of 0.

  **** TTYSETs 71 and 72 will not work until 6 May 80. ****

      TTYSET 72 enables or disables the given TTY (provided it is on
      the DCA scanner).  If the low-order bit of the function word is
      on, then the TTY is enabled, else it is disabled.  This is the
      equivlent of the TTY [NO] EXIST monitor command for the given TTY.

336.  Low-core location 346 contains:
	left half: optimum number of disk buffers for buffered-mode I/O;
	right half: number of data words per track for the disk.
      These numbers will be different at CCRMA and SU-AI since the disks
      are different in size.

337. The following TTYSET functions can now be done even if the
     target TTY is not in use.  (As of 6 May 80.)
	;40	;Set speed
	;41	;Hang up the line
	;70	;Get LINBIT entry for this TTY
	;71	;Get bit indicating TTY's existence
	;72	;Set bit indicating TTY's existence

     Also, the Set-Speed TTYSET (40) is now allowed for any local TTY as
     well as for auto-baud-detect lines.  Here are the possible speeds and
     their representative values for the right half of the function word.
     (See item 243 in this file.)

	Speed	   Index

	110 baud   0
	134.5      1
	150	   2
	300	   3
	600	   4
	1200	   5
	1800	   6
	2400	   7
	4800	   10
	9600	   11
	1200/150   12
	55	   13
	75	   14
	EXT speed  15
	1800/1200  16
     Note that not all TTY ports on the DCA scanner can run at all of
     of the above speeds.  See a wizard for the possible speeds on a
     given TTY.

338.  The NSL privilege is "Negative Service Level", bit 4,,0 in the
      passive privilege word.  With this "privilege", a job won't ever
      be run if any non-NSL jobs are trying to run.  This bit is NOT
      copied to a new job's privileges upon FORK command but currently
      is copied to new job's privs upon SWAP UUO.  See NOTICE[UP,DOC]/273P.

339.  TV camera error pointer:
      As of some time ago (about 1978?), when an error occurs during an
      INPUT from device TV, the number returned in the left half of the
      fourth word of the block pointed to by the INPUT UUO is actually
      the offset from the beginning of the data block of the data word
      where the transfer was terminated.  The UUO Manual claims the
      left half returns a user address, but that is not true; the
      left half returns the offset of the stopping point.

340. (CCRMA WAITS only)  The following bits are in the left half of the
      first word of the block pointed to by a UPGIOT or DDUPG UUO; the
      program will be made to output to the F2's Grinnell displays.
	2,,0		Interpret this as a III program
	4,,0		Interpret this as a Grinnell program
      If both of these bits are off, then the program is interpreted
      as a DD program (DD interface commands).

341.  The SETPRO UUO can be used to set the protection of the lower
      segment of the issuing job, but only by explicitly specifying the
      number of that job in the AC used in the UUO.  You cannot set the
      protection of any other lower segment.  The purpose of this feature
      is to allow modifying the lower's protection without affecting its
      creation date (see the SETCRD UUO), before creating an upper segment
      which will automatically copy the protection and creation date of
      the lower segment.